﻿#pragma once
#include "Common.h"

static const size_t num_freelist = 208; // 哈希桶数量
 
class ThreadCache
{
public:
	void* Allocate(size_t bytes); // 申请bytes大小内存空间

	void DeAllocate(void* obj, size_t bytes); // 释放bytes大小内存空间

	void* FetehFromCentralCache(size_t bytes); // 向中心缓存申请bytes大小内存空间

	void ListTooLong(FREELIST& freelist, size_t n); // 从tc回收n个内存块到cc中



private:
	FREELIST _freelists[num_freelist]; // 哈希桶
};

// TLS thread local storage，定义全局变量，避免线程冲突，每个线程都有一个独立的pTLSThreadCache
static _declspec(thread) ThreadCache* pTLSThreadCache = nullptr;

